TCP_ServerOpen-Baustein

Kurz-Information

Name

TCP_ServerOpen

→POE-Typ

→Funktion

Kategorie

Weitere Systembausteine, Netzwerkbausteine, Baustein mit interner Fehlerdiagnose

→Namespace

logicals.system.network.tcp

Grafische Schnittstelle

Verfügbar ab

Version 3.2.2 (für Bibliothek Standard)

Funktionalität

Der Baustein reserviert eine Adresse und einen Port für den →TCP-Server.

Eingänge, Ausgänge, Ergebniswert

 

Bezeichner

→Datentyp

Beschreibung

Eingänge:

interfaceAddress

DWORD

IP-Adresse, die reserviert werden soll

interfacePort

UINT

IP-Port, die reserviert werden soll

Ausgänge:

serverHandle

TCP_ServerHandle

Handel der reservierten Adresse und des reservierten Ports

Ergebniswert:

 (= rc)

TCP_ErrorCode

liefert den Status der TCP-Operation:

succeeded: Die Operation ist erfolgreich.

invalidHandle: Der Handle ist ungültig.

cannotListenOnSocket: Zu viele Systemressources sind reserviert.
Reduzieren Sie die Verwendung von TCP_ServerOpen.

cannotCreateSocket: Socket kann nicht erstellt werden.

cannotBindSocket: Socket für die Schnittstelle kann nicht gebunden werden.

Der Eingang EN und der Ausgang ENO sind für den →Aufruf des Bausteins verfügbar. Siehe "Ausführungssteuerung: EN, ENO" für Informationen zum Eingang EN und zum Ausgang ENO.

Informieren Sie sich unter:

Interne Fehlerdiagnose für Baustein

Der Baustein prüft die folgenden Fehlerfälle:

  • Der Handle ist ungültig.

  • Es wurden zu viele Systemressourcen reserviert.

  • Socket kann nicht erstellt werden.

  • Socket für die Schnittstelle kann nicht gebunden werden.

In einem solchen Fehlerfall wird der Ausgang ENO des Bausteins auf den Wert FALSE (oder eine Entsprechung) zurückgesetzt. Zusätzlich liefert der Baustein den entsprechenden Status (siehe die vorhergehende Tabelle).

Beispiel für Verwendung im ST-Editor

Programm mit Aufrufen von TCP-Bausteinen
PROGRAM TCP_Server
  USING logicals.system.network.tcp;
  VAR
    accptRC : TCP_ErrorCode := invalidHandle;
    serverCommData : tcpServerCommData;
    sendTestMsg : String[30] := 'Test Message';
    init : bool := true;
  END_VAR
 
  IF init THEN
    serverCommData.address := INET_ATON('127.0.0.1');
    serverCommData.port := 9999;
 
    TCP_ServerOpen(interfaceAddress:=serverCommData.address, interfacePort:=serverCommData.port, serverHandle=>serverCommData.serverHandle);
 
    init := false;
  END_IF;
 
  IF accptRC <> succeeded THEN
    accptRC := TCP_ServerAcceptConnection(serverHandle:=serverCommData.serverHandle, clientHandle=>serverCommData.clientHandle);
  ELSE
    TCP_Send(clientHandle:=serverCommData.clientHandle, data:=sendTestMsg);
  END_IF;
END_PROGRAM
 
TYPE
  tcpServerCommData : STRUCT
    address : DWORD;
    port : UINT;
    serverHandle : logicals.system.network.tcp.TCP_ServerHandle;
    clientHandle : logicals.system.network.tcp.TCP_ClientHandle;
  END_STRUCT;
 
  tcpClientCommData : STRUCT
    serverAddress : DWORD;
    serverPORT : UINT;
    clientHandle : logicals.system.network.tcp.TCP_ClientHandle;
  END_STRUCT;
END_TYPE

Bei der Erstellung Ihrer Anwendung im ST-Editor erstellen Sie den Aufruf eines Bausteins, indem Sie den laut Syntax erforderlichen Text eintippen oder die Inhaltshilfe verwenden.